Debugging program failure exhibited by voluminous data
نویسندگان
چکیده
It is difficult to debug a program when the data set that causes it to fail is large (or voluminous). The cues that may help in locating the fault are obscured by the large amount of information that is generated from processing the data set. Clearly, a smaller data set which exhibits the same failure should lead to the diagnosis of the fault more quickly than the initial, large data set. We term such a smaller data set a data slice and the process of creating it data slicing. The problem of creating a data slice is undecidable. In this paper, we investigate four generateand-test heuristics for deriving a smaller data set that reproduces the failure exhibited by a large data set. The four heuristics are: invariance analysis, origin tracking, random elimination, and programspecific heuristics. We also provide a classification of programs based upon a certain relationship between its input and output. This classification may be used to choose an appropriate heuristic in a given debugging scenario. As evidenced from a database of debugging anecdotes at the Open University, U.K., debugging failures exhibited by large data sets require inordinate amounts of time. Our data slicing techniques would significantly reduce the effort required in such scenarios.
منابع مشابه
Finding Failure Causes through Automated Testing
A program fails. Under which circumstances does this failure occur? One single algorithm, the delta debugging algorithm, suffices to determine these failure-inducing circumstances. Delta debugging tests a program systematically and automatically to isolate failureinducing circumstances such as the program input, changes to the program code, or executed statements.
متن کاملRAID: A System to Aid in the Removal of Program Bugs
Debugging is hard. Each program bug brings its own particular problems, but there are usually three basic steps that a programmer must perform. These common steps are: (1) understanding something about the failure and the program being debugged, (2) finding the error in the program, and (3) correcting the error. Tools to assist in this process vary from providing virtually no assistance to inte...
متن کاملSynopsis of Possible Collaboration in the Area of Software Debugging
Software debugging has been regarded as one of the challenges in the field of software engineering. In practice, traditional debugging needs extensive labor and time in order to locate bugs in a typical software program. A typical programmer needs to set breaking points and execute the buggy program on several inputs. At the same time, he needs to examine the program states and try to locate th...
متن کاملDebugging Machine Learning Tasks
Unlike traditional programs (such as operating systems or word processors) which have large amounts of code, machine learning tasks use programs with relatively small amounts of code (written in machine learning libraries), but voluminous amounts of data. Just like developers of traditional programs debug errors in their code, developers of machine learning tasks debug and fix errors in their d...
متن کامل8vlqj'hwhuplqlvwlf5hsod\iru'hexjjlqjri 'lvwulexwhgg5hdo7lphh6\vwhpv
Cyclic debugging is one of the most important and most commonly used activities in program development. During cyclic debugging, the program is repeatedly reexecuted to track down errors when a failure has been observed. This process necessitates reproducible program executions. Applying classical debugging techniques such using breakpoints or single stepping in real-time systems change the tem...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید
ثبت ناماگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید
ورودعنوان ژورنال:
- Journal of Software Maintenance
دوره 10 شماره
صفحات -
تاریخ انتشار 1998